home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / TUTORIAL / 0222.ZIP / PARSE.P < prev    next >
Text File  |  1982-02-28  |  2KB  |  66 lines

  1. PROCEDURE TRIM (VAR S: LSTRING) ;
  2. VAR 
  3.    I_X,
  4.    I_R,
  5.    I_L,
  6.    I_C,     : INTEGER ;
  7.    T        : LSTRING(255) ;
  8. BEGIN 
  9.  COPYLST(S,T);
  10. I_L := T. LEN ;
  11. I_C := 1 ;
  12. WHILE (T[I_C] = ' ') DO
  13.   BEGIN 
  14.     I_C := I_C + 1;
  15.   END; 
  16. { I_C WILL CONTAIN FIRST NONBLANK CHAR POSITION}
  17.  I_R := 1 ;
  18. FOR I_X := I_C TO I_L DO
  19.   BEGIN
  20.   S[I_R] := T[I_X];
  21.   I_R := I_R + 1 ;
  22.   END; {FOR I_X }
  23. END; {TRIM}
  24.  
  25. function getword (var w: lstring; var  l: lstring) : integer ;
  26. var 
  27. wo_rd,
  28. temp     : lstring(255) ;
  29. i_word,
  30. i_str,
  31. i_ndex,
  32. i_wlen,
  33. i_llen   : integer ;
  34. e_wrd    : char  ;
  35. BEGIN
  36. I_WLEN := UPPER(W) ;
  37. I_LLEN := L.LEN  ; 
  38. I_WORD := 0 ;
  39. E_WRD := ' ' ;  {TERMINATION CHARACTER FOR CURRENT WORD SCAN} 
  40. I_STR := 0 ;
  41.  COPYLST(L,TEMP);
  42. WO_RD := NULL ;
  43. IF TEMP[1] = ' ' THEN
  44.    TRIM(TEMP) ;  {tRIM LEADING BLANKS FROM STRING}
  45. IF TEMP[1] = '''' THEN E_WRD := '''' ;
  46. IF TEMP[1] = '"'  THEN E_WRD := '"'  ;
  47. IF TEMP[1] = '('  THEN E_WRD := ')'  ;
  48. IF TEMP[1] = '['  THEN E_WRD := ']'  ;
  49. IF TEMP[1] = '{'  THEN E_WRD := '}' ;
  50. I_STR := INDEX(TEMP,E_WRD) ;
  51. I_STR := I_STR - 1 ;
  52. FOR I_NDEX := 2 TO I_STR DO
  53.   BEGIN
  54.   WO_RD[I_NDEX] := TEMP[I_NDEX] ;
  55.   END; {FOR INDEX 2 TO ISTR}
  56. I_STR := I_STR + 2;
  57. FOR I_NDEX := I_STR TO I_LLEN DO
  58.     L[I_NDEX] := TEMP[I_NDEX] ;
  59.  { INPUT STRING HAS HAD WORD TRIMMED OFF FRONT}
  60.  COPYLST(WO_RD,W) ;
  61.  { WORD FIELD IS PASSED BACK TO "W" PARAMETER }
  62.  GETWORD := WO_RD.LEN ;
  63.  { fUNCTION RETURN VALUE SET TO WORD LENGTH }
  64.  { ** or zero  IF NO WORD TO RETURN }
  65.  END;
  66.